package com.gnerv.battle.boot.module.base.repository.mapper;

import com.gnerv.battle.boot.common.base.annotation.tenant.TenantExclude;
import com.gnerv.battle.boot.module.base.model.dto.PermissionDTO;
import com.gnerv.battle.boot.module.base.model.entity.Permission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Gnerv LiGen
 */
@Mapper
public interface PermissionMapper {

    int insert(@Param(value = "permission") Permission permission);

    int deleteByUkId(@Param(value = "ukId") String ukId);

    int updateByUkId(@Param(value = "permission") Permission permission);

    PermissionDTO selectByUkId(@Param(value = "ukId") String ukId);

    List<PermissionDTO> listByName(@Param(value = "name") String name,
                                   @Param(value = "limitStart") Integer limitStart,
                                   @Param(value = "limitSize") Integer limitSize);

    List<String> listByAccountUkId(@Param(value = "accountUkId") String accountUkId);

    List<PermissionDTO> listByRoleUkId(@Param(value = "roleUkId") String roleUkId);

    int isExist(@Param(value = "url") String url, @Param(value = "type") String type, @Param(value = "ukId") String ukId);

    @TenantExclude
    String selectValueByUrlAndType(@Param(value = "url") String url, @Param(value = "type") String type);

    int countByName(@Param(value = "name") String name);
}




